package com.example.cato_message_jms.jms;


import com.example.cato_entity.entity.Order;
import org.apache.activemq.artemis.jms.client.ActiveMQQueue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.support.converter.MappingJackson2MessageConverter;


import javax.jms.Destination;
import java.util.HashMap;
import java.util.Map;


@Configuration
public class MessageConfig {

    @Bean
    public Destination orderQueue() {
        return new ActiveMQQueue("tacocloud.order.queue");
    }


    public MappingJackson2MessageConverter messageConverter() {
        MappingJackson2MessageConverter messageConverter = new MappingJackson2MessageConverter();
        messageConverter.setTypeIdPropertyName("_typeId"); // 让接受者知道传入的信息转换成什么类型。默认情况下包含转换的全限定名，
        // 要求客户端也要要求相同的全限定名

        // 消息的_typeId属性就不用发送全限定名，而是发送order值，
        Map<String, Class<?>> typeIdMappings = new HashMap<String, Class<?>>();
        typeIdMappings.put("order", Order.class);
        messageConverter.setTypeIdMappings(typeIdMappings);
        return messageConverter;
    }
}
